/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package compumundohipermegared;

import ConstantesProcotolo.Protocolo;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.jxta.socket.JxtaMulticastSocket;

/**
 *
 * @author Arkan
 */
public class RecibidorMensajesGuardar extends Thread {

    private JxtaMulticastSocket ms;
    private Guardador guardador;
    private String ultimoArchivoGuardado;
    private String ultimoArchivoCargado;

    RecibidorMensajesGuardar(JxtaMulticastSocket jxtaMulticastSocket, Guardador aThis) 
    {
        ultimoArchivoGuardado="";
        ultimoArchivoCargado="";
        this.ms = jxtaMulticastSocket;
         
        guardador = aThis;
    }

    public void run() 
    {

        while (true) 
        {
            try {
                System.out.println("Esperando Conexiones multcast de guardar:");

                byte[] buf = new byte[1000];
                DatagramPacket recv = new DatagramPacket(buf, buf.length);
                ms.receive(recv);
               
                String mensaje = new String(recv.getData(), 0);

                System.out.println("llego el mensaje: " + mensaje);
                
                if(mensaje.startsWith(Protocolo.GUARDEN.toString())){
                    
                    String nombreArchivo = mensaje.split(":")[1];
                    System.out.println("me toca guardar el estado en el archivo " + nombreArchivo);
                    if(!nombreArchivo.equals(ultimoArchivoGuardado)){
                        guardador.guardarEstado(nombreArchivo);
                        ultimoArchivoGuardado = nombreArchivo;
                    }
                    
                    
                }else if(mensaje.startsWith(Protocolo.CARGUEN_ESTADO.toString())){
                    
                    String nombreArchivo = mensaje.split(":")[1];
                    if(!nombreArchivo.equals(ultimoArchivoCargado)){
                        System.out.println("me dicen que carge el estado en el archivo " + nombreArchivo);
                        guardador.cargarEstado(nombreArchivo);
                        ultimoArchivoCargado=nombreArchivo;
                    }
                    
                }
            } catch (IOException ex) {
                Logger.getLogger(RecibidorMensajesGuardar.class.getName()).log(Level.SEVERE, null, ex);
            }
        }

    }
}
